La sentencia condicional por autonomasia es if. La sentencia if conlleva la evaluación de una condición lógica que implica una bifurcación en el flujo de ejecución del programa. Esto a su vez nos lleva a la definción de bloque.
El bloque es un conjunto de sentencias que conceptualmente se ejecutarán como una unidad (asumeindo que no se produce un error que interrumpa la ejecución). Por ejemplo, en el lenguaje C, los bloques se identifican como secuancias de sentencias entre llaves. El Python el bloque se define de una forma un tanto particular: la indentación. Es decir, el nivel de indentación determina qué instrucción son parte del mismo bloque.
In [4]:
if 5 > 2:
print("1 sentencia 1")
print("2 sentencia 2")
else:
print("3 imposible")
print("4 fin")
En este ejemplo se puede comporbar fácilmente que las dos primeras invocaciones a print forman un bloque que se ejecuta cuando la condición se cumple, mientras que el tercero se ejecutaría en el caso contrario. La cuarta invocación se ejecuta siempre porque está fuera del cuerpo del condicional (en el mismo nivel de indentación). También se puede comprobar que para crear un bloque se utilizar el carácter dos-puntos (:).
Por tanto:
En Python la indentación no es una cuestión estética, sino que determina la organización del código
Existe una combinación de else + if llamada elif que permite ahorrar algo de código y simplificar la sentencia.
Están disponibles los habituales:
El bucle while es conceptualmente el más simple. Está compuesto por una condición lógica y un bloque. Mientras la condición se cumpla el bloque se seguirá ejecuando:
In [5]:
a = 3
while a > 0:
print("sigue")
a = a - 1
In [7]:
fruits = ['orange', 'strawberry', 'pineapple']
for fruit in fruits:
print(fruit)
Esto es más útil que tener un contador para recorrrer el contenedor en la mayoría de los casos. Pero, para los casos en los que se requiera disponer del contador se puede utilizar la función *+enumerate()**.
In [8]:
fruits = ['orange', 'strawberry', 'pineapple']
for index, fruit in enumerate(fruits):
print(index, fruit)
El for de Python también dispone de las palabras reservadas break y continue, que tiene el comportamiento habitual en otros lenguajes.
Si se necesita un bucle for cuya variable de control toma valores entre dos dados (típicamente entre 0 y n-1) se puede utilizar la función range, que devuelve una lista de enteros:
In [1]:
for i in range(8):
print(i)